package com.ht.api.call.func;

import com.ht.api.bean.AjaxResult;
import com.ht.api.bean.LoginBean;
import com.ht.api.db.annotate.HtFunction;

import cn.hutool.json.JSONObject;

/**
 * 业务接口函数
 * @author asq
 * @createTime 2024年12月23日 21:23:29
 */
@HtFunction
public interface IFunctionCall {
	
	/**
	 * 函数名称
	 * @return
	 */
	public String getName();
	
	/**
	 * 具体的业务方法
	 * @param param 参数
	 * @return
	 */
	public default Object execute(JSONObject param) {
		return execute(LoginBean.createBySys(), param, null);
	}
	
	/**
	 * 具体的业务方法
	 * @param me 操作人
	 * @param param 参数
	 * @return
	 */
	public default Object execute(LoginBean me, JSONObject param) {
		return execute(me, param, null);
	}
	
	/**
	 * 具体的业务方法
	 * @param me 操作人
	 * @param param 参数
	 * @param result 业务函数执行结果（如果本函数被当成后置函数时）
	 * @return
	 */
	public Object execute(LoginBean me, JSONObject param, AjaxResult result);
}
